﻿using System;
using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoFuncionario
    {
        public Funcionario Inserir(Funcionario funcionario, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(funcionario, usuarioPermissao);
        }

        public Funcionario Atualizar(Funcionario funcionario, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(funcionario, usuarioPermissao);
        }

        public void Excluir(Funcionario funcionario, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(funcionario, usuarioPermissao);
        }

        public Funcionario ObterFuncionarioPorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterFuncionarioPorId(id, usuarioPermissao);
        }

        public IList<Funcionario> ObterTodosFuncionarios(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosFuncionarios(usuarioPermissao);
        }

        public IList<Funcionario> ObterTodosFuncionarios(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string codigo,
            string descricao, string cargoCodigo, string cargoDescricao, string setorCodigo, string setorDescricao, string previsaoSalarialDe, string previsaoSalarialAte, string salarioAnteriorDe,
            string salarioAnteriorAte, string percentualUltimoReajusteDe, string percentualUltimoReajusteAte,
            DateTime? ultimoReajusteDe, DateTime? ultimoReajusteAte, DateTime? contratacaoDe, DateTime? contratacaoAte,
            DateTime? demissaoDe, DateTime? demissaoAte)
        {

            return Fachada.GetInstancia().ObterTodosFuncionarios(inicio, quantidade, quantidadeMinima, usuarioPermissao, codigo, descricao, 
                cargoCodigo, cargoDescricao, setorCodigo, setorDescricao, decimal.Parse(previsaoSalarialDe), 
                decimal.Parse(previsaoSalarialAte), decimal.Parse(salarioAnteriorDe), decimal.Parse(salarioAnteriorAte), 
                decimal.Parse(percentualUltimoReajusteDe), decimal.Parse(percentualUltimoReajusteAte), ultimoReajusteDe,
                ultimoReajusteAte, contratacaoDe, contratacaoAte, demissaoDe, demissaoAte);
        }

        public Funcionario ObterFuncionarioPorCodigo(Usuario usuarioPermissao, string codigo)
        {
            return Fachada.GetInstancia().ObterFuncionarioPorCodigo(usuarioPermissao, codigo);
        }

        public IList<Funcionario> ObterFuncionarioPorDescricao(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string descricao)
        {

            return Fachada.GetInstancia().ObterFuncionarioPorDescricao(inicio, quantidade, quantidadeMinima,usuarioPermissao, descricao);
        }

        public Funcionario ObterFuncionarioPorCpf(Usuario usuarioPermissao, string cpf)
        {

            return Fachada.GetInstancia().ObterFuncionarioPorCpf(usuarioPermissao, cpf);
        }

        public Funcionario ObterFuncionarioPorPessoa(Usuario usuarioPermissao, Pessoa pessoa)
        {

            return Fachada.GetInstancia().ObterFuncionarioPorPessoa(usuarioPermissao, pessoa);
        }

        public IList<Funcionario> ObterFuncionarioPorCargo(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, Cargo cargo)
        {

            return Fachada.GetInstancia().ObterFuncionarioPorCargo( inicio, quantidade, quantidadeMinima,usuarioPermissao, cargo);
        }

        public IList<Funcionario> ObterFuncionarioPorSetor(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, Setor setor)
        {

            return Fachada.GetInstancia().ObterFuncionarioPorSetor(inicio, quantidade, quantidadeMinima,usuarioPermissao, setor);
        }
    }
}